(function () {// 把 People这个作用域限定在这个函数内，就不会报错（同名）了；
  class H {
    name: String;
    age: number;
    constructor(name: String, age: number) {
      this.name = name;
      this.age = age;
    }
    call() {
      alert("啊？！")
    }
  }
  /**
   * 继承H类
   * H被称为父类
   * People和Man被称为子类
   * 通过继承，可以让多个类中的代码，给子类用，
   * 这样只需要写一次就好了
   * 如果子类中有和父类同名方法,子类方法会覆盖父类方法
   *  我们把它叫做方法的重写
   */
  class People extends H {
    call() {
      console.log("我是People")
    }
    run(){
      console.log('i can run')
    }
  }

  class Man extends H {
    call() {
      console.log("我是Man")
    }
  }

  const p = new People('as', 23);
  const m = new Man('bs', 20);
  p.call();
  console.log("People", p)
  m.call()
  console.log("Man", m)
})();